'PAUSE MEJORADO->   WHILE INKEY$="":WEND

#define NO_KEY ""

'defines para facilitar el uso de la matriz buttonStrings
#DEFINE IZQUIERDA 0
#DEFINE DERECHA 1
#DEFINE ARRIBA 2
#DEFINE ABAJO 3
#DEFINE DISPARO 4

'matriz con los codigos 
DIM keyCode(4) AS UInteger => _
    { KEYO, KEYP, KEYQ, KEYA, KEYSPACE }
    
    DECLARE FUNCTION setupController AS UByte
    
FUNCTION setupController() AS UBYTE
   
   DIM a AS UBYTE 
   

PRINT AT 3,8;MENU_CONTROLS;
colorMenu(controllerType,0)
PRINT AT 7,8;MENU_CONTROLS_KEYBOARD;
colorMenu(controllerType,1)
PRINT AT 9,8;"2.JOYSTICK KEMPSTON";
colorMenu(controllerType,2)
PRINT AT 11,8;"3.JOYSTICK SINCLAIR 1";
colorMenu(controllerType,3)
PRINT AT 13,8;"4.JOYSTICK SINCLAIR 2";
colorMenu(controllerType,4)
PRINT AT 15,8;"5.JOYSTICK CURSOR";


  
  menuWaitNoKey()
     DO
 
         keyString=INKEY
         
     LOOP UNTIL (keyString="1") OR (keyString="2") OR (keyString="3") OR (keyString="4") OR (keyString="5") 

   a= (CAST(UBYTE, VAL(keyString)))-1
   


      IF a=2 then
            'sinclair 1
    
            TeclasSINCLAIR1()
   END IF
      IF a=3 then
            'sinclair 2

            TeclasSINCLAIR2()
   END IF
      IF a=4 then
            'sinclair cursor
        
            TeclasCURSOR()
            
   END IF
   
 
   RETURN a
   
END FUNCTION




SUB TeclasSINCLAIR1()
    keyCode(IZQUIERDA)=KEY1
    keyCode(DERECHA)=KEY2
    keyCode(ABAJO)=KEY3
    keyCode(ARRIBA)=KEY4
    keyCode(DISPARO)=KEY5
END SUB
SUB TeclasSINCLAIR2()
    keyCode(IZQUIERDA)=KEY6
    keyCode(DERECHA)=KEY7
    keyCode(ABAJO)=KEY8
    keyCode(ARRIBA)=KEY9
    keyCode(DISPARO)=KEY0
END SUB
SUB TeclasCURSOR()
    keyCode(IZQUIERDA)=KEY5
    keyCode(DERECHA)=KEY8
    keyCode(ABAJO)=KEY6
    keyCode(ARRIBA)=KEY7
    keyCode(DISPARO)=KEY0
END SUB

SUB waitNoKey()
    


IF controllerType<>1 THEN

    DO
    keyString = INKEY
    LOOP UNTIL(keyString = NO_KEY)

ELSE

     DO
    
    LOOP UNTIL(IN(31)= 0)       
  
END IF   
    
    
END SUB
SUB pausaIntro()
  waitNoKey()
  PAUSE 150
    waitNoKey()
END SUB

SUB menuWaitNoKey()
  'wait no key especial para evitar problemas con joystick kempston durante el menu
  DO
    keyString = INKEY
    LOOP UNTIL(keyString = NO_KEY)

END SUB
SUB checkInput()
'si es kempston:
IF controllerType=1

        key=IN(31)
        
        IF key bAND %1000 THEN 
        
                key =keyCode(ARRIBA)
                
        ELSE IF key bAND %100 THEN 
        
                key=keyCode(ABAJO)
        
        ELSE IF key bAND %10 THEN 
        
                key=keyCode(IZQUIERDA)
                
        ELSE IF key bAND %1 THEN 
        
                key= keyCode(DERECHA)
                
        ELSE IF key bAND %10000 THEN   
        
                key= keyCode(DISPARO)
        END IF

ELSE 
           'resto de controles 
        key=GetKeyScanCode()

END IF


END SUB
SUB check_ways()

'espera a que el player seleccione una dirección y luego comprueba si realmente hay puerta en esa dirección (o puerta cerrada)
DIM puertaIzq,puertaArr,puertaDer,puertaAba AS UBYTE



puertaIzq=walls(room,0)
puertaArr=walls(room,1)
puertaDer=walls(room,2)
puertaAba=walls(room,3)

printInput()


waitNoKey()
     DO
         temporizador()
         
        
         checkInput()
     
     LOOP UNTIL (key=keyCode(ARRIBA) AND puertaArr>=1) OR (key=keyCode(ABAJO) AND puertaAba=1) OR (key=keyCode(IZQUIERDA) AND puertaIzq=1) OR (key=keyCode(DERECHA) AND puertaDer=1) OR time_left=0 
    
    eraseInput()    
    
    IF key=keyCode(ARRIBA) then
        IF puertaArr=1 then
           playerDir=2
           playerMoveU()
           playerDir=0
           playerFrom=2
           pl_y=pl_y-1
        ELSE IF puertaArr=2

                IF llave=1 then            
                        playerDir=2                                               
                        PRINT at 6,21;"  "; AT 7,21;"  "; AT 8,21;"  ";
                        playerMoveU()
                        levelCompleted=1
                ELSE 
                        INK 7
                        PRINT at 21,5;EVENTS_NOKEY;
                        waitNoKey()
                        PAUSE 0
                        limpia_texto() 
                        check_ways()       
                END IF
        END IF

    
    END IF
    
    IF key=keyCode(ABAJO) then
        playerDir=4
        playerMoveD()
        playerDir=0
        playerFrom=4
        pl_y=pl_y+1
    END IF
    
    IF key=keyCode(IZQUIERDA) then
        playerDir=1
        playerMoveL()
        playerDir=0
        playerFrom=1
        pl_x=pl_x-1
    END IF
        
    IF key=keyCode(DERECHA) then
         playerDir=3
         playerMoveR()
         playerDir=0
         playerFrom=3
         pl_x=pl_x+1
    END IF
    
    'IF key=keyCode(DISPARO) then
        'levelClear()
        'minimap()
        
    'END IF
 

 END SUB
 

SUB input_engageJoystick()
  
  
  DIM yNew,yOld AS UBYTE
    
     yNew=20
     respuesta=1
     INK 6
     PRINT AT yNew,1;"^";
     
 
  DO    
     yOld=yNew
     waitNoKey()
     
            DO
         
                temporizador()
                checkInput()
          
            LOOP UNTIL key=keyCode(ARRIBA) OR key=keyCode(ABAJO) OR key=keyCode(DISPARO) OR time_left=0
            waitNoKey()
            IF key=keyCode(ARRIBA) then 
    
                    IF respuesta=2 OR  respuesta=3 then
                             respuesta=respuesta-1
                             yNew=yOld-1
                    END IF 
            
            END IF        
    
            IF key=keyCode(ABAJO) then 
    
                    IF respuesta=1 OR respuesta=2 then
                            respuesta=respuesta+1
                            yNew=yOld+1
                    END IF        
            END IF
    
    'mueve flecha y continua hasta "m"
    
     INK 6
     PRINT AT yOld,1;" ";
     PRINT AT yNew,1;"^";
  
  LOOP UNTIL key=keyCode(DISPARO) or time_left=0
       
  IF time_left<>0 then    
           
  
  resaltar_opcion(respuesta)
  IF respuestaRandom=2 then respuesta=respuesta-1
  IF respuestaRandom=1 then respuesta=respuesta+1
    
 
           IF respuesta= 4 then respuesta= 1
           IF respuesta= 0 then respuesta= 3

           
           checkRespuesta()
  
  END IF   
       
 END SUB

SUB pressAnyKey()
        'rutina de mostrar "PULSA CUALQUIER TECLA PARA CONTINUAR" con colorines molones
        PAUSE 15
        
        DIM key AS STRING
        
        INK 6
            
            WHILE key="" OR (controllerType=1 AND (IN(31)= 0))
             
                     BRIGHT counter      
                     counter=counter+1
                     IF counter>1 then counter=0 
                     PRINT AT 23,1;INPUT_PRESSANYKEY;            
                     PAUSE 5      
                     key=INKEY
          
               
            END WHILE
            
            waitNoKey()
            playSFX0()
            
END SUB
